| ../. | ||||
| SEAC10 | ||||
| MTCT10 - TEDA11 | ||||
| JAVP31 | ||||
| HCIK10 - LING11 | ||||
Lingo als authoringtool kunnen gebruiken, ontwerp van intuitieve interface Verslag + Director Movie Query Driven Mp3 Speler in Macromedia Directordoor de toename van free software en de gevorderde staat van shared libraries ontstaat er steeds meer ruimte voor kleine programmaatjes met erg specifieke functie Als perfect voorbeeld hierbij wil ik Quicksilver aanhalen, een macintosh programmaatje met een erg inuitieve en slimme interface. Het is een soort van 'Run-Box' (Windowstoets + R) die met je meedenkt. Intuitief wil zeggen begrijpen zonder aangeleerd te zijn. Hoewel de huidige trend is om met iconen te werken moet de gebruiker altijd eventjes over het icoon hoveren om middels de tooltip aangeleerd te krijgen waar het icoon voor staat. Dit is dus snel, maar niet zo intuitief. Quicksilver presenteerd je met een runbox waar je met een paar letters in te toetsen van wat je wilt doen genoeg hebt om een taak te ondernemen. De box is slim genoeg om te zien dat de 2 letters uf aangeven dat je de website http://userfriendly.org wilt bezoeken. dit door te kijken naar de meest gebruikte commando's, preferences en history files Naar dit model wil ik een mp3 speler bouwen, een mp3 speler die snapt welke files je hebt staan en met een simpele term gfenoeg heeft om een playlist samen te stellen
We willen een mp3 speler die zowel via het internet als locaal te gebruiken is en die met minder acties te gebruiken is als huidige alternatieven
Een gebruiker vult een gedeelte van een keyword in, drukt enter en hoort muziek .... lets fire up director and start codin'.... functieverdelingDe player gaat twee dingen uitvoeren;
Omdat je toch eerst een filenaam nodig hebt om af te spelen lijkt het me logisch met deze functie te beginnen, communicatie met de server Voor debugging purposes kan het handig zijn om ipv met scripts, met tekstfiles te werken waarin de output van het scriptje staat, zo heb je automatisch een gecontroleerde testomgeving waarmee het makkelijker te zien is of je output daadwerkelijk de input matchtte scriptje.txt file:///e:/mp3/bizet/Bizet%20-%20Carmen%20-%20Les%20voicis%20le%20quadrille.mp3 rest het dit text filetje neer te zetten op een webserver De invoer wordt door het script vergeleken met de bij het scriptje bekende bestand- en foldernamen
de gebruiker krijgt behalve een searchbox ook een knop om verder te kunnen zappen CommunicatieHierboven zijn terloops al de voornaamste kenmerken van het protocol aan bod gekomen: een client heeft een uniek ID waar de huidige query en positie binnen de playlist aan gekoppeld en getracked wordenEen client dient dus enkel dezelfde query te versturen om elke keer een nieuw nummer te krijgen laten we proberen director bovenstaand test scriptje in te laten lezen en er iets mee te laten doen; We maken in director een nieuwe movie aan en zetten er een invoerveld in klaar We moeten 2 dingen naar het scriptje doorsturen;
In Director kan je op verschillende wijze met het netwerk spelen,
Ik opteer hier voor postNetText, een functie waarmee je een associative array (list) kunt sturen naar een script via de post methode (bij POST wordt de userinput/formvariables naar STDIN van de cgi geschreven, bij GET achter het vraagteken in de URI gestopt Zet onder queryfield een knop, hoewel vaak overbodig is het handig om tijdens development bepaalde 'shortcuts' overeind te hebben als er plots iets snel getest / veranderd moet worden
01 global gNetId -- global network op id, is there a
-- network operation in progress;
02 on mouseUp me
03 sendlist = ["query":member("queryfield").text, "clientID":"123"]
04 gNetId = postNetText("http://127.0.0.1/scriptje.txt", sendlist);
05 end
Zo de query wordt verstuurd, of althans in theorie, want in de praktijk kan je dat pas zeggen als dit aan de werkelijkheid getoets is; momenteel doet het script nog niets met de data die de server terugstuurd; sterker nog , het is zich nie bewust dat er zo'n data zou kunnen zijn...Het lastige aan net-werken is dat het zo asynchroon is; op het moment dat jou programma op response van de server zit te wachten wil je als gebruiker niet in een programmaloop komen te zitten die vastgelopen lijkt te zijn;je programma moet ten alle tijden responsive zijn we lossen dit op door het filmpje hetzelfde frame te laten herhalen waarbij op het allerlaatste moment (exitFrame) de player wordt verteld naar hetzelfde frame (the frame) te gaan Framescript van frame 1 01 global gNetId 02 on exitFrame me 03 if (netDone(gNetId) = TRUE) and (netError(gNetId) = "OK") then 04 put netTextResult() 05 end if 06 go the frame 07 end oftewel in het Nederlands:
op het einde van dit frame check je of netwerkoperatie nummer 'gNetId ' klaar is en
mocht hij klaar zijn of hij ook daadwerkelijk geslaagd is ondertussen kan je bij dit scriptje al aardig wat waarnemen als je het runt, er wordt iets verstuurd en de server spuugt idd een url terug die wordt weergegeven in het output venster | ||||
| FULO01 | ||||
| FOTO10 | ||||
| CCP411 - CCP421 | ||||
| ANIM31 | ||||